/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package braipetro.server;

import braipetro.data_access.DataConnection;
import braipetro.data_access.DataSet;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import braipetro.interfaces.regras.ModRegras;
import java.rmi.RemoteException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafish.clients.opc.JEasyOpc;
import javafish.clients.opc.JOpc;
import javafish.clients.opc.component.OpcGroup;
import javafish.clients.opc.component.OpcItem;
import javafish.clients.opc.exception.ComponentNotFoundException;
import javafish.clients.opc.exception.ConnectivityException;
import javafish.clients.opc.exception.SynchReadException;
import javafish.clients.opc.exception.UnableAddGroupException;
import javafish.clients.opc.exception.UnableAddItemException;


/**
 *
 * @author manasses
 */
public class BRAIPetro_Server {

    public BRAIPetro_Server() {
        try {
            //IRegras rg = new ModRegras();
            //Naming.rebind("rmi://localhost:1099/braipetro_server", rg);
            
            Registry r = LocateRegistry.createRegistry(1099);
            r.rebind("regras", new ModRegras());
            
        } catch (RemoteException ex) {
            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (MalformedURLException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        BRAIPetro_Server teste = new BRAIPetro_Server();
        
//        DataConnection cnn = new DataConnection();
//        cnn.loadFromFile("conn.conf");
//        cnn.open();
//        
//        
//        DataSet dtsUnidades = new DataSet(cnn);
//        dtsUnidades.setSql("select id_unidade, nome from unidade");
//        
//        DataSet dtsPlantas = new DataSet(cnn, dtsUnidades);
//        dtsPlantas.setSql("select id_planta, nome "
//                + "from planta "
//                + "where id_unidade = :id_unidade");
//        
//        dtsUnidades.open();
//        
//        System.out.println(dtsUnidades.numRows());
//        System.out.println(dtsPlantas.numRows());
//        
//        dtsUnidades.next();
//        
//        System.out.println(dtsPlantas.numRows());
        
        
      
        
        
//        try {
//            JOpc.coInitialize();
//            
//            JEasyOpc opc = new JEasyOpc("localhost", "ElipseSCADA.OPCSvr.1", "JOPC1");
//            
//            OpcItem item = new OpcItem("tag001", true, "");
//            OpcGroup group = new OpcGroup("Grupo01", true, 500, 0.0f);
//            
//            group.addItem(item);
//            opc.addGroup(group);
//            
//            opc.connect();
//            opc.start();
//            opc.registerGroups();
//        
//            synchronized(teste) {
//                teste.wait(50);
//            }
//            
//            int circles = 7;
//            int acircles = 0;
//            
//            while (acircles++ < circles) {
//                synchronized(teste) {
//                    teste.wait(1000);
//                }
//                
//                OpcItem resp = opc.synchReadItem(group, item);         
//                System.out.println(resp);
//            }
//            
//            JOpc.coUninitialize();
//           
//        } catch (ConnectivityException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (UnableAddGroupException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (ComponentNotFoundException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (SynchReadException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (InterruptedException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        } catch (UnableAddItemException ex) {
//            Logger.getLogger(BRAIPetro_Server.class.getName()).log(Level.SEVERE, null, ex);
//        }
    }   
}
